package cn.infrabase.core.codec;

import javax.annotation.Nonnull;

/**
 * 编码器接口。
 *
 * @param <T> 待编码的数据。
 * @param <R> 编码后的数据。
 * @author Weimin Gao
 * @since 1.0.0
 **/
public interface Encoder<T, R> {

    /**
     * 编码给定的数据。
     *
     * @param data 给定的数据（待编码的数据）。
     * @return 编码后的数据。
     * @throws EncodeException 如果给定的数据编码发生错误时。
     */
    R encode(@Nonnull T data) throws EncodeException;

}
